﻿///////////////////////////////////////////////////////////////////////////////
//
// This file is part of the BassDrop project
//   https://code.google.com/p/bass-drop/
//
//
// Creator:	Gergely Krajcsovszki (krajcsovszkig@hotmail.com)
// Date:	2013-08-04 17:10
//
//
// Copyright © 2013-2014. Gergely Krajcsovszki
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
///////////////////////////////////////////////////////////////////////////////
namespace BassDrop.Core.Common.Plugins
{
	/// <summary>
	/// The type of an external plugin
	/// </summary>
	public enum PluginType
	{
		/// <summary>
		/// A plugin providing a link to a cloud service.<para/>
		/// Contains a class Connection : BassDrop.Core.Cloud.CloudConnectionBase
		/// Connection must have a constructor expecting a BassDropPluginBase
		/// </summary>
		CloudProvider,
		/// <summary>
		/// A plugin providing decoding / playback capabilities for certain kinds of media.<para/>
		/// Contains a class Decoder : BassDrop.Core.Media.MediaDecoderBase
		/// Decoder must have a constructor expecting a BassDropPluginBase
		/// </summary>
		MediaDecoder,
		/// <summary>
		/// A plugin providing encoding / writing capabilities for certain kinds of media.<para/>
		/// Contains a class Encoder : BassDrop.Core.Media.MediaEncoderBase
		/// Encoder must have a constructor expecting a BassDropPluginBase
		/// </summary>
		MediaEncoder,
		/// <summary>
		/// A plugin providing decoding / playback and encoding / writing capabilities for certain kinds of media.<para/>
		/// Contains a class Decoder : BassDrop.Core.Media.MediaDecoderBase and a class Encoder : BassDrop.Core.Media.MediaEncoderBase
		/// Encoder and Decoder must have a constructor expecting a BassDropPluginBase
		/// </summary>
		MediaCodec
	}
}
